/**
 * 作者：
 * 创建时间：2012-10-23 下午4:46:30
 */
package dragon.model.intercept;

import java.util.Map;

import dragon.core.db.DML;
import dragon.core.exception.ExceptionHandler;
import dragon.core.util.StringUtils;
import dragon.model.bizObject.BizObject;
import ejp.Database;
import ejw.ServerInterface;

/**
 * 实现功能：业务操作授权拦截器
 */
public class ModelProcessPermissionsInterceptor extends Interceptor {

	@Override
	public int beforeAdd(BizObject bizObject, Map<String, String> parameterMap, ServerInterface sif, Database db) throws ExceptionHandler {

		// 业务模型编码 CODE
		String bizCode = parameterMap.get("CODE");

		// 业务操作 PROCESS
		String process = parameterMap.get("PROCESS");

		String sql = "insert into sys.model_process_permissions(bizcode,process,kind,tid) values(?,?,?,?)";
		// 授权目标类型：用户组 USERGROUP_TID，组织机构 ORG_TID，人员 USER_TID
		String[] ids = null;
		String usergroup = parameterMap.get("USERGROUP_TID");
		if (!StringUtils.isEmpty(usergroup)) {
			ids = usergroup.split(",");
			if (ids != null) {
				for (String id : ids) {
					if (StringUtils.isInteger(id)) {
						DML.prepareExecuteUpdate(db, sql, bizCode, process, "R", StringUtils.intValue(id));
					}
				}
			}
		}

		String org = parameterMap.get("ORG_TID");
		if (!StringUtils.isEmpty(org)) {
			ids = org.split(",");
			if (ids != null) {
				for (String id : ids) {
					if (StringUtils.isInteger(id)) {
						DML.prepareExecuteUpdate(db, sql, bizCode, process, "O", StringUtils.intValue(id));
					}
				}
			}
		}

		String user = parameterMap.get("USER_TID");
		if (!StringUtils.isEmpty(user)) {
			ids = user.split(",");
			if (ids != null) {
				for (String id : ids) {
					if (StringUtils.isInteger(id)) {
						DML.prepareExecuteUpdate(db, sql, bizCode, process, "U", StringUtils.intValue(id));
					}
				}
			}
		}

		ids = null;

		return EXCLUDE_ALL;
	}
}
